# 定义一个名片盒子
cards = [
    {'name': '张飞', 'job': "CEO", 'company': '张飞牛肉', 'tel': 13888888888, 'addr': '天府新谷'},
    {'name': '关羽', 'job': "CFO", 'company': '张飞牛肉', 'tel': 13999999999, 'addr': '天府新谷'},
    {'name': '刘备', 'job': "CTO", 'company': '张飞牛肉', 'tel': 13666666666, 'addr': '天府新谷'}
]

# 功能模块
# 状态码：
# first: 初始状态
# reenter: 功能选择输入错误, 重新输入
# warning: 多次输入错误格式, 警告用户
# angry: 警告后, 再次输入错误格式, 直接退出
# return: 功能完成, 再次选择
status = "first"
# 程序循环体
while True:
    operation = '6'
    if status == "first":
        print("""欢迎来到名片盒子，您可以：
            \r1. 添加名片
            \r2. 展示所有名片
            \r3. 搜索名片
            \r4. 修改名片
            \r5. 删除名片
            \r6. 退出""")
        operation = input("请输入对应的数字以选择要进行的操作：")
    elif status == "reenter":
        print("""欢迎回到名片盒子，您可以：
            \r1. 添加名片
            \r2. 展示所有名片
            \r3. 搜索名片
            \r4. 修改名片
            \r5. 删除名片
            \r6. 退出""")
        operation = input("请重新输入正确的数字以选择要进行的操作：")
    # 都不是，那就是return
    else:
        print("""欢迎回到名片盒子，您可以：
            \r1. 添加名片
            \r2. 展示所有名片
            \r3. 搜索名片
            \r4. 修改名片
            \r5. 删除名片
            \r6. 退出""")
        operation = input("请继续输入对应的数字以选择要进行的操作：")
    # 添加名片
    if operation == '1':
        print("正在进行添加名片，我们需要收集一些必要的信息 ^_^")
        name = input("请输入姓名：")
        job = input("请输入职位：")
        company = input("请输入公司名：")
        tel = input("请输入电话：")
        addr = input("请输入地址：")
        cards.append({'name': name, 'job': job, 'company': company, 'tel': int(tel), 'addr': addr})
        print(f"添加[{name}]的个人名片成功！")
    # 展示所有名片
    elif operation == '2':
        print("正在展示所有名片：")
        for card in cards:
            # 取出每一张名片的所有value
            values = list(card.values())
            # 分别赋值给这些变量
            name, job, company, tel, addr = values
            print(f"""
                \r**************************************
                \r姓名：{name}\t\t\t职位：{job}
                \r电话：{tel}\t公司：{company}
                \r地址：{addr}
                \r**************************************""")
        print("\n已展示所有名片 ^_^")
    # 搜索名片
    elif operation == '3':
        name = input("请输入您想搜索的人：")
        not_find = True
        for card in cards:
            # 判断name对应的值是否为用户输入内容
            if name == card["name"]:
                # 找到这个人后，输出他的名片
                print("找到啦！在这：")
                # 取出这张名片的所有value
                values = list(card.values())
                # 分别赋值给这些变量
                name, job, company, tel, addr = values
                print(f"""**************************************
                    \r姓名：{name}\t\t\t职位：{job}
                    \r电话：{tel}\t公司：{company}
                    \r地址：{addr}
                    \r**************************************""")
                not_find = False
        # 全部遍历一遍没找到的话
        if not_find:
            print(f"很抱歉，没有找到[{name}]的名片 T_T")
    # 修改名片
    elif operation == '4':
        name = input("请输入您要修改的名片姓名：")
        for card in cards:
            # 判断name对应的值是否为用户输入内容
            if name == card["name"]:
                # 找到这个人后，输出他的名片
                print("找到啦！")
                name_new = input("请输入新的姓名：")
                job_new = input("请输入新的职位：")
                company_new = input("请输入新的公司名：")
                tel_new = input("请输入新的电话：")
                addr_new = input("请输入新的地址：")
                card["name"] = name_new
                card["job"] = job_new
                card["company"] = company_new
                card["tel"] = tel_new
                card["addr"] = addr_new
                print("修改完成！^_^")
                # 修改完成后跳出遍历cards的循环
                break
        # 全部遍历一遍没找到的话(即没有在循环里面跳出，就会执行这这个代码块)
        else:
            print(f"很抱歉，没有找到[{name}]的名片 T_T")
        # 修改的模块还可以完善
        # 比如可以支持修改同名用户的信息
        # 以手机号码区分即可
        pass
    # 删除名片
    elif operation == '5':
        name = input("请输入您想要删除的名片姓名：")
        not_find = True
        # 存储对应名片的索引
        # index = 0
        for card in cards:
            # 判断name对应的值是否为用户输入内容
            if name == card["name"]:
                # 找到这个人后，输出他的名片
                print("找到啦！")
                card.clear()
                # cards.pop(index)
                cards.remove(card)
                print("已删除该名片信息！")
                not_find = False
                # 找到并删除后退出遍历cards列表的循环
                # break
            # index += 1
        if not_find:
            print(f"很抱歉，没有找到[{name}]的名片 T_T")
    # 退出
    elif operation == '6':
        print("已退出，期待您的下次使用！^_^")
        break
    # 输入错误
    else:
        print("您输入的数据不对哦! T_T")
        print('-' * 21)
        status = "reenter"
        continue
    print('-' * 21)
    status = "return"
